
define([
    'Util',
    'list',
    'comboSelect', 
    'buttonGroup',
    'text!tpl/project/editProject.tpl',
    'date',
    'select',
    'form',
    'jquery',
    'dialog',
    'validator',
    'loading',
    '../common/getPath',
    'cookie'
], function(Util, List, ComboSelect, buttonGroup, tpl, MyDate, Select, Form, $, Dialog, Validator, Loading, AjaxPath, $cookie) {
    var select;
    //系统变量-定义该模块的根节点
    var $el = null;
    //系统变量-构造函数
    var _indexModule = null,
        list = null,
        valiform = null,
        tabParent = null,
        editProjectdata = null,
        loadingConfig=null,
        handLoading=null,
        editProjectValidator = null,
        manageSelect = null,
        statusSelect = null,
        confluenceSelect = null,
        confluenceSelectData = null,
        developSelect = null,
        testSelect = null,
        startDate=null,
        endDat=null,
        config = null,
        dialog = null,
        proEdiActiveLogList = null,
        editProMomeValidor = null;
    var initialize = function(indexModule, options, tabItem) {
        $el = $(tpl);
        _indexModule = indexModule;
        //事件--点击切换tab后事件回调
        $(tabItem).on("tabActive", function() {
            console.log('common example')
            tabItem.show(true); //刷新表单
        });
        //页面传递变量，勿删！
        editProjectdata = options;
        tabParent = tabItem;
        createLoading();
       /* //业务相关代码
        TabInit();*/
        //将根节点赋值给接口
        eventInit();
        formInit();
        this.content = $el;
        inSelect();
        initDate();
        ProjectEditValidation();
        // keyBg();
        initTextarea();
        proEdiActLog();
        initNextStatusBtn(editProjectdata.flowActions);
    };

    //业务代码-事件初始化
    var eventInit = function() {
        $el.on('click', '.btnSave', saveProjectEditValidation);
        $el.on('click', '.btnBack', back);
        $el.on('click', '.triEdiProject', changeTriEdiPro);
        $el.on('click', '.editProjectLogTab li', actEdiLogChange);
        $el.on('click', '.editProjectAddMome', createProMomeDialog);
        $el.on('click', '.editProNextStatus a', editProjectNextStatus);
        // $el.on('click', '.btnNodeBack', back);
        // $el.on('click', '.btnProjectReset', resetFun);
    };

    var resetFun = function() {
        $("input[name='projectName']", $el).val("");
        manageSelect.setValue(0);
        confluenceSelect.setValue(0);
        requireSelect.setValue(0);
        developSelect.setValue(0);
        testSelect.setValue(0);
        $("textarea[name='memo']", $el).val("");
        $("input[name='spacekey']", $el).val("");
    }

    var back = function() {
        tabParent.switchTab(editProjectdata.menuId);
        tabParent.destroy('editProjectTab');
    }

    var initDate = function() {
        startDate = new MyDate({
            el: $("#startDate", $el),
            inputClassName: 'date',
            label: '<i style="color:red;padding:2px;">*</i>开始时间:',
            name: 'startTime',    //开始日期文本框name
            isReadOnly: true,  //项可设置日期输入框是否只读
            min: -365, 
            max: editProjectdata.endTime,//最大日期限制
            range: false,
            type: "date",
            isDisabled: false,//是否禁用组件
            //defaultValue: nowTime(0,'yyyy-MM-dd'),
            defaultValue: editProjectdata.startTime,
            btns: ['clear', 'now', 'confirm'],
            done: function(dates,value,startDate){
                endDate.options.min = dates; //设置结束日期的最小限制
            }
        });

        endDate = new MyDate({
            el: $("#endDate", $el),
            inputClassName: 'date',
            label: '<i style="color:red;padding:2px;">*</i>结束时间:',
            name: 'endTime',    //开始日期文本框name
            isReadOnly: true,  //项可设置日期输入框是否只读
            min: editProjectdata.startTime,         //最小日期限制
            range: false,
            type: "date",
            isDisabled: false,//是否禁用组件
            //defaultValue: nowTime(365,'yyyy-MM-dd'),
            defaultValue: editProjectdata.endTime,
            btns: ['clear', 'now', 'confirm'],
            done: function(dates,value,endDate){
                startDate.options.max = dates; //设置开始日期的最大日期
            },
            clearFunc:function(){
                startDate.options.max = '2099-06-16 23:59:59';
            }
        });
    }

    var formInit = function() {
        $("input[name='projectName']", $el).val(editProjectdata.projectName);
        $("input[name='tagName']", $el).val(editProjectdata.tagName);
        //$("textarea[name='memo']", $el).val(editProjectdata.memo);
        $("input[name='spacekey']", $el).val(editProjectdata.spacekey);
        // $("textarea[name='remark']", $el).val(editProjectdata.remark);
        // $("select[name='state']", $el).val(editProjectdata.state);
    }

    var switchTab = function(index) {
        $(".t-tabs-items li", $el).eq(index).trigger('click');
    }

    var initTextarea = function(){
        Util.ajax.getJson(AjaxPath.project + "/projects/" + editProjectdata.id, {}, function(result, isok) {
            if(result.returnCode==="0000") {
               $("textarea[name='memo']", $el).val(result.beans.project.memo);               
            } 
        });
    }

    var inSelect = function() {
        //项目经理
        Util.ajax.getJson( AjaxPath.project + "/dropdown?modual=user&type=userAccount", {}, function(result, isok){
            /*manageSelect = new Select({
                el:$("#projectManage", $el),       //要绑定的容器
                ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置，<span class="s">慎用</span>
                    method:'GET'
                }, 
                label:'<i style="color:red;padding:2px;">*</i>项目经理:', //下拉框单元左侧label文本，可不配置
                selectText:false,       //是否显示  ‘选择|清除’  模式
                name:'userAccount',    //下拉框单元右侧下拉框名称
                disabled:false,     //组件是否被禁用
                topOption:"请选择", //设置最顶部option的text属性
                value:'',//初始选中项设置 默认是按value，如果你想按id设置 也可以 value:[&quot;id&quot;,1],这样设置
                textField:"value",   //设置下拉框内容，填写数据中对应的字段名
                valueField:"key",//设置下拉框value，填写数据中对应的字段名
                datas: result.beans,         //数据源
                loadAtClick:false,// true--第一次点击时渲染|false或不配置--初始化时渲染
                dataReady:function(){
                    console.log("获取项目经理");
                } //select的DOM结构加载完后执行
                //  url:'../data/select.json'  //数据源，不建议使用，后期将会移除
            });
            //console.log(editProjectdata.user_account);
            manageSelect.setValue(editProjectdata.userAccount);*/
            if(result.returnCode === "0000"){
                for(var i =0;i<result.beans.length;i++){
                    result.beans[i].name =  result.beans[i].value;
                    result.beans[i].value = result.beans[i].key;
                }
                result.beans.unshift({
                    "id":"0",
                    "name":"请选择",
                    "value":""
                })
                result.beans = JSON.parse(JSON.stringify(result.beans));
            }
            manageSelect = new ComboSelect({
                el:$("#projectManage", $el),       //要绑定的容器
                name:'userAccount',    //下拉框单元添加name属性
                checked:'0',
                loadAtClick:false,
                // url:'../data/select.json',  //数据源，不建议使用，后期将会移除
                datas: result.beans         //数据源与url模式可二选一
            });
            $("#projectManage input[name='comboInput']").attr("placeholder", "请选择");
            manageSelect.setValue(""+editProjectdata.userAccount);
        })
        Util.ajax.getJson( AjaxPath.project + "/dropdown?modual=project&type=projectStatus&flowSwitch=true&flowFrom="+editProjectdata.projectStatus+"&systemId="+editProjectdata.id, {}, function(result, isok){
        // Util.ajax.getJson( AjaxPath.project + "/dropdown?modual=project&type=projectStatus", {}, function(result, isok){
            statusSelect = new Select({
                el:$("#projectStatus", $el),       //要绑定的容器
                ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置，<span class="s">慎用</span>
                    method:'GET'
                }, 
                label:'<i style="color:red;padding:2px;">*</i>状态:', //下拉框单元左侧label文本，可不配置
                selectText:false,       //是否显示  ‘选择|清除’  模式
                name:'projectStatus',    //下拉框单元右侧下拉框名称
                disabled:false,     //组件是否被禁用
                topOption:"请选择", //设置最顶部option的text属性
                value:'',//初始选中项设置 默认是按value，如果你想按id设置 也可以 value:[&quot;id&quot;,1],这样设置
                textField:"value",   //设置下拉框内容，填写数据中对应的字段名
                valueField:"key",//设置下拉框value，填写数据中对应的字段名
                datas: result.beans,         //数据源
                loadAtClick:false,// true--第一次点击时渲染|false或不配置--初始化时渲染
                dataReady:function(){
                    console.log("获取项目状态");
                } //select的DOM结构加载完后执行
                //  url:'../data/select.json'  //数据源，不建议使用，后期将会移除
            });
            if(editProjectdata.projectStatus === undefined || editProjectdata.projectStatus === null || editProjectdata.projectStatus === ""){
                statusSelect.setValue(0);
            } else { 
                statusSelect.setValue('"' + editProjectdata.projectStatus + '"');
            }
        })

        //需求负责人
        Util.ajax.getJson( AjaxPath.project + "/dropdown?modual=user&type=userId", {}, function(result, isok){
            /*requireSelect = new Select({
                el:$("#requireLeader", $el),       //要绑定的容器
                ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置，<span class="s">慎用</span>
                    method:'GET'
                }, 
                label:'<i style="color:red;padding:2px;"></i>需求负责人:', //下拉框单元左侧label文本，可不配置
                selectText:false,       //是否显示  ‘选择|清除’  模式
                name:'requireLeader',    //下拉框单元右侧下拉框名称
                disabled:false,     //组件是否被禁用
                topOption:"请选择", //设置最顶部option的text属性
                value:'',//初始选中项设置 默认是按value，如果你想按id设置 也可以 value:[&quot;id&quot;,1],这样设置
                textField:"value",   //设置下拉框内容，填写数据中对应的字段名
                valueField:"key",//设置下拉框value，填写数据中对应的字段名
                datas: result.beans,         //数据源
                loadAtClick:false,// true--第一次点击时渲染|false或不配置--初始化时渲染
                dataReady:function(){
                    console.log("获取需求负责人");
                } //select的DOM结构加载完后执行
                //  url:'../data/select.json'  //数据源，不建议使用，后期将会移除
            });*/
            if(result.returnCode === "0000"){
                for(var i =0;i<result.beans.length;i++){
                    result.beans[i].name =  result.beans[i].value;
                    result.beans[i].value = result.beans[i].key;
                }
                result.beans.unshift({
                    "id":"0",
                    "name":"请选择",
                    "value":""
                })
                result.beans = JSON.parse(JSON.stringify(result.beans));
            }
            requireSelect = new ComboSelect({
                el:$("#requireLeader", $el),       //要绑定的容器
                name:'requireLeader',    //下拉框单元添加name属性
                checked:'0', 
                loadAtClick:false,
                // url:'../data/select.json',  //数据源，不建议使用，后期将会移除
                datas: result.beans         //数据源与url模式可二选一
            });
            $("#requireLeader input[name='comboInput']").attr("placeholder", "请选择");
            if(editProjectdata.requireLeader === undefined || editProjectdata.requireLeader === null || editProjectdata.requireLeader === 0){
                requireSelect.setValue("0");
            }else{
                requireSelect.setValue(""+editProjectdata.requireLeader);
            }
            //开发负责人
           /* developSelect = new Select({
                el:$("#developLeader", $el),       //要绑定的容器
                ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置，<span class="s">慎用</span>
                    method:'GET'
                }, 
                label:'<i style="color:red;padding:2px;"></i>开发负责人:', //下拉框单元左侧label文本，可不配置
                selectText:false,       //是否显示  ‘选择|清除’  模式
                name:'developLeader',    //下拉框单元右侧下拉框名称
                disabled:false,     //组件是否被禁用
                topOption:"请选择", //设置最顶部option的text属性
                value:'',//初始选中项设置 默认是按value，如果你想按id设置 也可以 value:[&quot;id&quot;,1],这样设置
                textField:"value",   //设置下拉框内容，填写数据中对应的字段名
                valueField:"key",//设置下拉框value，填写数据中对应的字段名
                datas: result.beans,         //数据源
                loadAtClick:false,// true--第一次点击时渲染|false或不配置--初始化时渲染
                dataReady:function(){
                    console.log("获取开发负责人");
                } //select的DOM结构加载完后执行
                //  url:'../data/select.json'  //数据源，不建议使用，后期将会移除
            });*/
            developSelect = new ComboSelect({
                el:$("#developLeader", $el),       //要绑定的容器
                name:'developLeader',    //下拉框单元添加name属性
                checked:'0', 
                loadAtClick:false,
                // url:'../data/select.json',  //数据源，不建议使用，后期将会移除
                datas: result.beans         //数据源与url模式可二选一
            });
            $("#developLeader input[name='comboInput']").attr("placeholder", "请选择");
            if(editProjectdata.developLeader ===undefined || editProjectdata.developLeader === null || editProjectdata.developLeader === 0){
                developSelect.setValue("0");
            }else{
                developSelect.setValue(""+editProjectdata.developLeader);
            }
             //测试负责人
            /*testSelect = new Select({
                el:$("#testLeader", $el),       //要绑定的容器
                ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置，<span class="s">慎用</span>
                    method:'GET'
                }, 
                label:'<i style="color:red;padding:2px;"></i>测试负责人:', //下拉框单元左侧label文本，可不配置
                selectText:false,       //是否显示  ‘选择|清除’  模式
                name:'testLeader',    //下拉框单元右侧下拉框名称
                disabled:false,     //组件是否被禁用
                topOption:"请选择", //设置最顶部option的text属性
                value:'',//初始选中项设置 默认是按value，如果你想按id设置 也可以 value:[&quot;id&quot;,1],这样设置
                textField:"value",   //设置下拉框内容，填写数据中对应的字段名
                valueField:"key",//设置下拉框value，填写数据中对应的字段名
                datas: result.beans,         //数据源
                loadAtClick:false,// true--第一次点击时渲染|false或不配置--初始化时渲染
                dataReady:function(){
                    console.log("获取测试负责人");
                } //select的DOM结构加载完后执行
                //  url:'../data/select.json'  //数据源，不建议使用，后期将会移除
            });*/
            testSelect = new ComboSelect({
                el:$("#testLeader", $el),       //要绑定的容器
                name:'testLeader',    //下拉框单元添加name属性
                checked:'0', 
                loadAtClick:false,
                // url:'../data/select.json',  //数据源，不建议使用，后期将会移除
                datas: result.beans         //数据源与url模式可二选一
            });
            $("#testLeader input[name='comboInput']").attr("placeholder", "请选择");
            if(editProjectdata.testLeader ===undefined || editProjectdata.testLeader === null || editProjectdata.testLeader === 0){
                testSelect.setValue("0");
            }else{
                testSelect.setValue(""+editProjectdata.testLeader);
            }
            
        })
       
        //获取Confluence
        Util.ajax.getJson( AjaxPath.project + "/dropdown?modual=inventory&type=inventoryType&inventoryType=13", {}, function(result, isok){
            confluenceSelectData = result.beans;
            confluenceSelect = new Select({
                el:$("#confluenceServer", $el),       //要绑定的容器
                ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置，<span class="s">慎用</span>
                    method:'GET'
                }, 
                label:'<i style="color:red;padding:2px;"></i>Confluence空间服务器:', //下拉框单元左侧label文本，可不配置
                selectText:false,       //是否显示  ‘选择|清除’  模式
                name:'inventoryId',    //下拉框单元右侧下拉框名称
                disabled:false,     //组件是否被禁用
                topOption:"请选择", //设置最顶部option的text属性
                value:'',//初始选中项设置 默认是按value，如果你想按id设置 也可以 value:[&quot;id&quot;,1],这样设置
                textField:"value",   //设置下拉框内容，填写数据中对应的字段名
                valueField:"key",//设置下拉框value，填写数据中对应的字段名
                datas: confluenceSelectData,         //数据源
                loadAtClick:false,// true--第一次点击时渲染|false或不配置--初始化时渲染
                dataReady:function(){
                    console.log("获取Confluence")
                } //select的DOM结构加载完后执行
                //  url:'../data/select.json'  //数据源，不建议使用，后期将会移除
            });
            if(editProjectdata.inventoryId ===undefined || editProjectdata.inventoryId === null){
                confluenceSelect.setValue(0);
            }else{
                confluenceSelect.setValue('"'+editProjectdata.inventoryId+'"');
            }
        })
        
    }

    var ProjectEditValidation = function(checked) {
        var config = {
            // el: $('.validatorForm'),
            el: $(".detailProjectEditForm", $el),
            submitBtn: $(".btnSave"), //触发验证的按钮，可不配置
            dialog: true, //是否弹出验证结果对话框
            rules: {
                projectName: "required",
                tagName: 'required',
                userAccount: "required",
                projectStatus: 'required',
                startTime: "required|date",
                endTime: "required|date",
                // requireLeader: "required",
                // developLeader: "required",
                // testLeader: "required",
                // inventoryId: "required",
                // spacekey: "required|letterNum",
                spacekey: "letterNum",
            },
            messages: {
                projectName: {
                    required: "项目名称不能为空！"
                },
                tagName: {
                    required: "项目标签不能为空！"
                },
                userAccount: {
                    required: "请选择项目经理！"
                },
                projectStatus: {
                    required: "项目状态不能为空！"
                },
                startTime: {
                    required: "开始时间不能为空！"
                },
                endTime: {
                    required: "结束时间不能为空！"
                },
                // requireLeader: {
                //     required: "需求负责人不能为空！"
                // },
                // developLeader: {
                //     required: "开发负责人不能为空！"
                // },
                // testLeader: {
                //     required: "测试负责人不能为空！"
                // },
                // inventoryId: {
                //     required: "Confluence空间服务器不能为空！"
                // },
                // spacekey: {
                //     required: "空间key不能为空！",
                //     letterNum: "请输入字母或数字！"
                // }
                spacekey: {
                    letterNum: "请输入字母或数字！"
                }
            }
        };  
        editProjectValidator = new Validator(config);
        editProjectValidator.addMethod("letterNum", function(str) { return new RegExp("^[A-Za-z0-9]+$").test(str); });
    }

    var saveProjectEditValidation = function() {
        if(editProjectValidator.form()) {
            savEditProject();
        } else {
            console.log('验证失败');
        }
    }
    
    var savEditProject = function(e) {
        var handLoading = new Loading(loadingConfig);
        if(true) {
            var data = Form.serialize($('.detailProjectEditForm', $el));
            data.tagName = editProjectdata.tagName;
            data.memoUrl = editProjectdata.memoUrl;
            data.projectName = data.projectName.trim();
            data.userAccount = manageSelect.getSelected().key;
            data.requireLeader = requireSelect.getSelected().key;
            data.developLeader = developSelect.getSelected().key;
            data.testLeader = testSelect.getSelected().key;
            data.updatePerson = $cookie.get("userId");
            var config = null,
                dialog = null;
            // var orgId = addPositionData.orgId;
            // data.orgId = orgId;
            if((data.inventoryId === "" || data.inventoryId === null || data.inventoryId === undefined) && data.spacekey !==""){
                handLoading.destroy();
                new Dialog({
                    mode: 'tips',
                    content: '<div style="text-align:center;margin-top:70px">请选择Confluence空间服务器!</div>',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false
                });
                return false;
            }
            if(data.inventoryId && (data.spacekey === "" || data.spacekey === null || data.spacekey === undefined)){
                handLoading.destroy();
                new Dialog({
                    mode: 'tips',
                    content: '<div style="text-align:center;margin-top:70px">请输入空间key值!</div>',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false
                });
                return false;
            }
            // Util.ajax.getJson("/it/token/getToken", {}, function(result, isok){
                // var token= result.bean;
                // console.log("################3"+token);
                // if(token){
                    // data.token = token;
                    Util.ajax.postJson(AjaxPath.project + "/projects/" + editProjectdata.id, data, function(result, isok) {
                        handLoading.destroy();
                        if(result.returnCode==="0000") {
                            config = {
                                mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                                title:'提示',
                                width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                                height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                                cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                                modal:true,
                                content: '<div style="text-align:center;margin-top:50px">修改项目成功</div>' ,// 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                            };
                            dialog = new Dialog(config);
                            dialog.on('onclose',function(){
                                back();
                            });
                        } else {
                            content = '修改项目失败';
                            if(result.returnMessage) {
                                content = result.returnMessage;
                            }
                            config = {
                                mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                                title:'提示',
                                width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                                height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                                cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                                modal:true,
                                content: '<div style="text-align:center;margin-top:50px">'+content+'</div>' ,// 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                            };
                            dialog = new Dialog(config);
                            // dialog.on('onclose',function(){
                            //     back();
                            //     tabParent.destroy("修改项目");
                            // });
                        }
                    });
            //     }else{
            //         handLoading.destroy();
            //         config = {
            //             mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
            //             title:'提示',
            //             width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
            //             height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
            //             cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
            //             modal:true,
            //             content: '<div style="text-align:center;margin-top:50px">非法请求！</div>' ,// 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
            //         };
            //         dialog = new Dialog(config);
            //     }
            // });
        }
    }

    var createLoading = function(){
        loadingConfig = {
            el:'body',                  //组件要绑定的容器，默认为body（此项可不配置或留空）
            className:'loading',           //组件外围的className
            position:'center',      //提示信息位置，顶部top|默认center中央
            width:'300',      //loading的宽度,非必须，默认300
            height:'auto',      //loading的宽度,非必须，默认auto
            mask:1,                 //是否显示遮罩， 0不显示|默认1显示
            animate:1,              //是否显示动画效果， 0不显示|默认1显示
            mode:'layer',     //展示方式 loadingLine线条方式|默认layer弹层方式
            text:'加载中...',       //提示文字，默认 加载中...
            icon:'dotCycle',  //文字前面的gif动画， 默认dotCycle有点组成的圈|cmcc移动图标|cmccLarge大的移动图标
        }
    };
    //spacekey功能
    var keyBg = function(){
        $("input.key",$el).css({'background':'#F0F0F0'}).one("click",function(){
            $(this).css({'background':'#FFF'}).attr("placeholder","").val("");
        })
    };

    //初始化状态按钮
    var initNextStatusBtn = function(item){
        if(item === null){
            item = [];
        }
        var str = "";
        for(var i = 0; i < item.length; i++){
            if(item[i].description === ""){
                item[i].description = "&nbsp;";
            }
            str += '<a href="javascript:;" class="t-btn t-btn-white" odata="'+item[i].toValue+'" data="'+item[i].fromValue+'">'+item[i].description+'</a>';
        }
        $(".editProNextStatus", $el).html(str);
    }
    //状态按钮的点击事件
    var editProjectNextStatus = function(){
        var config = null;
        var nowStatus = $(this).attr("data");
        console.log(editProjectdata,nowStatus)
        Util.ajax.postJson(AjaxPath.project + '/projects/updateStatus?id='+editProjectdata.id+"&value="+$(this).attr("odata")+"&userId="+$cookie.get("userId"), {}, function(result, isok){
            if (result.returnCode==="0000") {
                config = {
                    mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                    title:'提示',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                    modal:true,
                    content: '<div style="text-align:center;margin-top:50px">修改状态成功</div>' ,// 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                };
                dialog = new Dialog(config);
                dialog.on('onclose',function(){
                    Util.ajax.getJson( AjaxPath.project + "/dropdown?modual=project&type=projectStatus&flowSwitch=true&flowFrom="+nowStatus+"&systemId="+editProjectdata.id, {}, function(json, st){
                        initNextStatusBtn(result.beans.project.flowActions);
                        statusSelect.reload(json.beans);
                        statusSelect.setValue(""+result.beans.project.projectStatus);
                        $(".editProjectLogTab li").eq(0).addClass('actived').siblings().removeClass('actived');
                        var data={};
                        data.type = "";
                        proEdiActiveLogList.search(data);
                    });
                });

            }else{
                config = {
                    mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                    title:'提示',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                    modal:true,
                    content: '<div style="text-align:center;margin-top:50px">'+result.returnMessage+'</div>' ,// 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                };
                dialog = new Dialog(config);
            }
        },'application/json');
    }
    //添加活动日志列表
    var proEdiActLog = function() {
        var config = {
            el: $('.editProjectLogList', $el),
            ajax:{    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置；慎用
                method:'GET'
            },
            field: {
                boxType: 'radio',
                key: 'id',
                items: [
                {
                    text: 'createrName',
                    name: 'createrName',
                    width: 100
                },
                {
                    text: '记录',
                    name: 'content',
                    width: 400,
                    className: 'text-break',
                    render: function (item, val) {
                        var str = "";
                        str += '<div class="fn-left">于&nbsp;&nbsp;' + new Date(item.createTime).Format('yyyy-MM-dd hh:mm:ss') + '&nbsp;&nbsp;' + item.typeName + '了&nbsp;&nbsp;' + item.businessType + '：' + '<a href="javascript:;" data="'+ item.businessId +'" class="viewSubTaskBtn">'+ item.businessTitle +'</a>' + item.content +'</div>';
                        return str;
                    }
                }]
            },
            page: {
                customPages: [2, 3, 5, 10, 15, 20, 30, 50], //可选择每页显示多少条
                perPage: 5, //默认每页显示多少条记录
                total: true
            },
            data: {
                // url: AjaxPath.project + "/projects"
                // url:"http://192.168.91.172:8089/devops-project/projects?httpToken=devopsuseracount"
                url: AjaxPath.project + "/logInfo/query?businessId="+editProjectdata.id+"&businessType=project"
                // url:"../../../data/list1.json"
            }
        };
        proEdiActiveLogList = new List(config);
        proEdiActiveLogList.search();
        proEdiActiveLogList.on('success',function(result){
            $(".editProjectLogList" ,$el).find(".sn-list-header").hide();
        });
    };
    //点击三角切换隐藏活动日志
    var changeTriEdiPro = function() {
        $(this).toggleClass('tri-left');
        $(this).parent('.t-list-title').siblings().stop().slideToggle();
    }
    //点击所有等激活样式时 刷新底部列表
    var actEdiLogChange = function(){
        var data={};
        $(this).addClass('actived').siblings().removeClass('actived');
        data.type = $(this).attr("data");
        proEdiActiveLogList.search(data);
    };
    var createProMomeDialog = function () {
        require(['text!tpl/requirement/addMemo.tpl'], function(addMomo){
            var data = {};
            data.formClassName = "proMemoForm";
            data.textareaName = "content";
            var config = {
                mode: 'confirm', //对话框模式，默认normal标准|tips浮动层|confirm确认对话框
                title: '添加备注', //对话框标题，
                content: Util.hdb.compile(addMomo)(data), //对话框内容，可以是字符串、html代码段,tpl对象。默认为loading状态（由点组成的圈。大段代码建议使用 tpl。
                ok: function() {
                    console.log('点击了确定按钮');
                    if(editProMomeValidor.form()) {
                        createProMome();
                    } else {
                        console.log('验证失败');
                    }
                    return false;
                },
                cancel: function() {
                    return true;
                },
                cancelValue: '取消', //取消按钮的文本 默认是 ‘关闭’
                okValue: '确定', //取消按钮的文本 默认是 ‘关闭’
                cancelDisplay: true, //是否显示取消按钮 默认true显示|false不显示
                width: 600, //对话框宽度，normal默认值为600，confirm默认值为300，tips默认值为240
                height: 140, //对话框高度，normal默认值为400，confirm默认值为180，tips默认值为80
                maxWidth: 240,//设置tips对话框的最大宽度,默认为240px。仅在tips对话框下生效，该项存在时，width属性将失效。
                maxHeight: 'auto', //设置tips对话框的最大高度,默认为auto。仅在tips对话框下生效，该项存在时，height属性将失效。
                padding:'0 16px 1em 10px',//(默认值: 继承 css 文件设置) 设置消息内容与消息容器的填充边距，即 style padding属性
                align: 'bottom left',//设置对话框与其他元素的对齐方式。仅在show(elem)与showModal(elem)传入元素时生效。默认值: "bottom left"。可选："top left" "top" "top right" "right top" "right" "right bottom" "bottom right" "bottom" "bottom left" "left bottom" "left" "left top"。
                skin: 'dialogSkin dialogSkin2',//设置对话框额外的className参数,多个className请使用空格隔开。
                fixed: false, //是否开启固定定位 默认false不开启|true开启
                quickClose: false, //点击空白处快速关闭 默认false不关闭|true关闭
                modal: true ,//是否开启模态框状态  默认false不开启|true开启,confirm默认状态为true
                backdropBackground:'#000',//设置遮罩颜色，默认 #000。
                backdropOpacity:0.7, //设置遮罩透明度，默认 0.7，取值范围：0~1 。
                beforeOpen: function() {
                    console.log('对话框打开时执行。');
                    // subTaskAssSelect();
                }, //对话框打开之前执行。
                escClose:true,//esc键快速关闭对话框，默认为true
                zIndex:990   // 对话框的z-index值，默认是1024。
            };
            dialog = new Dialog(config);
            creatEdiProMomeValidation();
        })
    };
    var creatEdiProMomeValidation = function() {
        var config = {
            // el: $('.validatorForm'),
            el: $(".proMemoForm"),
            // submitBtn: $(".btnSave"), //触发验证的按钮，可不配置
            dialog: true, //是否弹出验证结果对话框
            rules: {
                content: "required"
            },
            messages: {
                content: {
                    required: "备注不能为空！"
                }
            }    
        };  
        editProMomeValidor = new Validator(config);
    }
    var createProMome = function(){
        var config = null;
        var data = Form.serialize($('.proMemoForm'));
        data.businessId = editProjectdata.id;
        data.businessType = 'project';
        data.businessTitle = $("<span/>").text( $("input[name='projectName']", $el).val().trim() ).html();
        data.creater = $cookie.get('userId');
        Util.ajax.postJson(AjaxPath.project + '/logInfo/insert', JSON.stringify(data), function(result, isok){
            if(result.returnCode==="0000"){
                dialog.remove();
                proEdiActiveLogList.search();
                $('.editProjectLogTab li').eq(0).addClass('actived').siblings().removeClass('actived');
            }else {
                config = {
                    mode: 'confirm', // 对话框模式，默认normal标准|confirm浮动层|confirm确认对话框
                    title:'提示',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 120, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false, //是否显示取消按钮（强制执行，可在confirm模式下生效），可选项。 默认true(显示)
                    modal:true,
                    content: '<div style="text-align:center;margin-top:50px">'+result.returnMessage+'</div>' ,// 对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                };
                dialog = new Dialog(config);
            }
        }, 'application/json');
    };
    return initialize;
});

